blob: 60bb4fb615071c58a43e2e5bc620f4340cf70298 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
import axios from "axios";
import cacheData from "memory-cache";
const API_URL = process.env.API_URI;
export default async function handler(req, res) {
try {
const id = req.query.id;
const dub = req.query.dub || false;
const providers = ["enime", "gogoanime"];
const datas = [];
const cached = cacheData.get(id + dub);
if (cached) {
return res.status(200).json(cached);
} else {
async function fetchData(provider) {
try {
const data = await fetch(
dub && provider === "gogoanime"
? `${API_URL}/meta/anilist/info/${id}?dub=true`
: `${API_URL}/meta/anilist/info/${id}?provider=${provider}`
).then((res) => {
if (!res.ok) {
switch (res.status) {
case 404: {
return null;
}
}
}
return res.json();
});
if (data.episodes.length > 0) {
datas.push({
providerId: provider,
episodes: dub ? data.episodes : data.episodes.reverse(),
});
}
} catch (error) {
console.error(
`Error fetching data for provider '${provider}':`,
error
);
}
}
if (dub === false) {
await Promise.all(providers.map((provider) => fetchData(provider)));
} else {
await fetchData("gogoanime");
}
if (datas.length === 0) {
return res.status(404).json({ message: "Anime not found" });
} else {
cacheData.put(id + dub, { data: datas }, 1000 * 60 * 60 * 15); // 15 minutes
res.status(200).json({ data: datas });
}
}
} catch (error) {
res.status(500).json({ error });
}
}
|